import java.util.*;

public class day6 {
    /**
     * DP19 最长公共子序列(一)
     * https://www.nowcoder.com/practice/672ab5e541c64e4b9d11f66011059498?tpId=230&tqId=39761&ru=/exam/oj
     */
    public static void main3(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        char[] s1 = in.next().toCharArray();
        char[] s2 = in.next().toCharArray();

        int[][] dp = new int[n + 1][m + 1];
        // dp[i][0] 是代表j没有数据也就是s2为空，那么没有共同的子序列
        // dp[0][j] 也是同理
        for(int i = 1;i <= n;i++) {
            for(int j = 1;j <= m;j++) {
                if(s1[i - 1] == s2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }else {
                    dp[i][j] = Math.max(dp[i][j - 1],dp[i - 1][j]);
                }
            }
        }
        System.out.println(dp[n][m]);
    }



    /**
     * AB33 相差不超过k的最多数
     * https://www.nowcoder.com/practice/562630ca90ac40ce89443c91060574c6?tpId=308&tqId=40490&ru=/exam/oj
     */
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        // 滑动窗口
        int n = in.nextInt();
        int k = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0;i < n;i++) {
            arr[i] = in.nextInt();
        }
        Arrays.sort(arr);
        // 定条件的滑动窗口
        int left = 0,right = 0,ret = 0;
        while(right < n) {
            // 进窗口，就是把长度+1，后面再更新的时候一起完成
            // 先进行判断是否出窗口
            while(arr[right] - arr[left] > k) {
                left++;
            }
            // 更新
            ret = Math.max(ret,right - left + 1);
            right++;
        }
        System.out.println(ret);
    }



    /**
     * 爱吃素
     * https://ac.nowcoder.com/acm/problem/227310
     */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while(t-- != 0) {
            long a = in.nextLong();
            long b = in.nextLong();
            // 当存在一个 a和b 都不为存在1的情况下，进行乘法运算的话，那么最后的到的结果，一定可以被a或b整除
            // 那么这个结果无论是什么都不会出现素数的情况，只有当 其中的一个是1，并且另一个是一个素数才可以
            if((a == 1 && isprim(b)) || (b == 1 && isprim(a))) {
                System.out.println("YES");
            }else {
                System.out.println("NO");
            }
        }
    }
    public static boolean isprim(long x) {
        if(x < 2) {
            return false;
        }

        for(int i = 2;i <= Math.sqrt(x);i++) {
            if(x % i == 0) {
                return false;
            }
        }
        return true;
    }
}
